package com.proyecto.personas.modelo.servicio;

import com.proyecto.core.Utilidades.UtilString;
import com.proyecto.core.modelo.servicio.ServicioGenerico;
import com.proyecto.personas.modelo.dto.Correlativos;
import com.proyecto.personas.modelo.dto.CorrelativosId;

public class ServicioCorrelativos extends ServicioGenerico {

	public String obtenerProximoNumero( CorrelativosId correlativoId){
		Correlativos correlativo = null;
		
		String correlativoString = "";
		try {
			correlativo = ( Correlativos) consultar(correlativoId);
			if (correlativo.getSecuenciaentero() == null){
				correlativo.setSecuenciaentero(0);
			}
			correlativo.setSecuenciaentero(correlativo.getSecuenciaentero() + 1);
			modificar(correlativo, null);
			if (correlativo.getPrefijo()!= null){
				correlativoString = correlativo.getPrefijo(); 
			}
			
			correlativoString = correlativoString + this.numeroString(correlativo.getSecuenciaentero(), correlativo.getCorrelativoformato());
			
			if (correlativo.getSufijo()!= null){
				correlativoString = correlativoString + correlativo.getSufijo(); 
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return correlativoString;
	}
	
	
	public Integer obtenerProximoNumeroEntero(CorrelativosId correlativoId,boolean iniciaTransaccion){
		Correlativos correlativo = null;
		
		Integer correlativoEntero = 0;
		try {
			correlativo = ( Correlativos) consultar(correlativoId);
			if (correlativo.getSecuenciaentero() == null){
				
				correlativo.setSecuenciaentero(0);
			}
			correlativoEntero = correlativo.getSecuenciaentero() + 1;
			correlativo.setSecuenciaentero(correlativoEntero);
			modificar(correlativo, iniciaTransaccion);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return correlativoEntero;
	}
	
	
	public String numeroString(Integer numero, String formato){
		String numeroString = "";
		
		if (!UtilString.esVacio(formato)){
			Integer longigutNumero  = numero.toString().trim().length();
			
			numeroString = formato.substring(longigutNumero) + numero.toString();
		}else {
			numeroString = numero.toString();
		}
		return numeroString;
	}
}
